Vue.prototype.$delete = del
export function del(target, key) {
  // 新增 处理数组状态
  if (Array.isArray(target) && isValidArrayIndex(key)) {
    target.splice(key, 1)
    return
  }

  const ob = target.__ob__
  // 不可以vue.js实例上使用，也不可以在vue.js实例的根数据对象上使用
  if (target._isVue || (ob && ob.vmCount)) {
    process.env.NODE_ENV !== 'production' && warn('Avoid adding reactive properties to a Vue instance or its root $data' +
      'at runtime - declare it upfront in the data option.')
    return
  }
  // key 不是target本身的属性
  if (!hasOwn(target, key)) {
    return
  }
  delete target[key]
  // ob不存在，
  if (!ob) {
    return
  }
  ob.dep.notify()
}